#include <stdio.h>

void hex_out(char a)  // 输出8位数据的16进制数
{
    const char HEX[] = "0123456789ABCDEF";
    // 求 a 的16进制的最高位和最低位
    printf("%c%c", HEX[(a & 0xF0) >> 4], HEX[a & 0x0F]);
}

void out_1byte(char *addr)  // 用十六进制输出地址中的8位数据机器码
{
    hex_out(*(addr + 0));
}

void out_2byte(char *addr)  // 用十六进制输出地址中的16位数据机器码
{
    // 小端模式优先输出高字节
    hex_out(*(addr + 1));
    hex_out(*(addr + 0));
}

void out_4byte(char *addr)  // 用十六进制输出地址中的32位数据机器码
{
    // 小端模式优先输出高字节
    hex_out(*(addr + 3));   // C7
    hex_out(*(addr + 2));   // 7F
    hex_out(*(addr + 1));   // FF
    hex_out(*(addr + 0));   // FF
}